July 17, 2023
어떤 직사각형의 면적을 나타내는 정수 N이 주어집니다.
변의 길이가 A와 B인 직사각형의 넓이는 A * B이고 둘레는 2 * (A + B)입니다.
이 사각형의 변은 정수여야 하며, 면적이 N과 같은 직사각형의 최소 둘레를 구하는 것이 목표입니다.
예를 들어 정수 N = 30이 주어지면 면적 30의 직사각형이 있습니다:
함수를 작성합니다:
function solution(N);이 함수는 정수 N이 주어지면 면적이 N과 정확히 같은 직사각형의 최소 둘레를 반환합니다.
예를 들어 정수 N = 30이 주어지면 위에서 설명한 대로 함수는 22를 반환해야 합니다.
다음 가정에 대한 효율적인 알고리즘을 작성하십시오:
둘레는 면적에 약수이다, 즉 면적의 약수 두개의 더한값이 가장 작은 값을 구하면 된다.
function solution(N) {
let result = Number.MAX_SAFE_INTEGER;
for (let i = 1; i <= Math.sqrt(N); i++) {
if (N % i === 0) {
const b = N / i;
result = Math.min(result, 2 * (i + b));
}
}
return result;
}